\begin{ocl}{AudioPlayer}Class for the audioplayback, delivers methods for paly, pause and stop. It stores the current position of the playback and its volume in percent.

\inv{selected segment == null implies
self.current_position >= 0 &&
self.current_position <= duration}

context AudioPlayer inv:
selected segment != null implies
self.current_position >= selected segment.start and self.current_position <= selected segment.end

context AudioPlayer inv:
self.volume >= 0 and self.volume <= 100
\end{ocl}


\begin{ocl}{AudioEffect}
Class to store an effect and apply it to an audioblock.

context AudioEffect inv:
self.paremeters != null
\end{ocl}

\begin{ocl}{Profile}
Class to store and retrieve a bunch of effects. Provides methods to save and load from disk.

context Profile inv:
self.applied_effects != null and self.applied_effects.Size() >=1
\end{ocl}

\begin{ocl}{Segment}
Class to handle a segment of an audiofile.

context Segment inv:
self.start >= 0 and self.start < self.end

context Segment inv:
self.end <= duration and self.end > self.start
\end{ocl}

\begin{ocl}{Controller}
Class to controll all parts of the application. It interacts with the GUI.
\end{ocl}

